"""
zip
    作用：将多个可迭代对象中对应的元素组合成一个个元组，生成的元组个数由最小的可迭代对象决
定。
"""
list1 = ['刘千琪','崔龙腾','李欣桐','姚晓冲','赵俊']
list2 = ['女','男','女','男','男']

# 可以将多个可迭代对象组合成元祖
for item in zip(list1,list2):
    print(item)

print('=' * 30)

# 矩阵  列变行
"""
[
    [2,3,5,7]
    [0,0,1,4]
    [0,0,2,8]
    [2,3,9,2]
]
"""
list_map = [
    [2,0,0,2],
    [3,0,0,3],
    [5,1,2,9],
    [7,4,8,2]
]

for item in zip(list_map[0],list_map[1],list_map[2],list_map[3]):
    print(item)

print('=' * 30)

list_new = []
for item in zip(list_map[0],list_map[1],list_map[2],list_map[3]):
    list_new.append(item)
print(list_new)

print('=' * 30)

list_new2 = []
for item in zip(list_map[0],list_map[1],list_map[2],list_map[3]):
    list_new2.append(list(item))
print(list_new2)

print('=' * 30)

list_new3 = []
# 无论你的列表有多少行，通过 *传递给zip
for item in zip(*list_map):
    list_new3.append(list(item))
print(list_new3)

print('=' * 30)
# 列表推导式
list_new4 = [list(item) for item in zip(*list_map)]
print(list_new4)

# 生成器表达式
# 用推导式形式创建的生成器对象，就是生成器表达式
# 变量 = (表达式 for 变量 in 可迭代对象 if 判断条件)
generator_new = (list(item) for item in zip(*list_map))
print(generator_new)
for item in generator_new:
    print(item)